Mobile devices, such as smart-phones, tablet PCs, and other handheld devices have become widespread and important to the daily activities of many consumers and businesses. Traditionally, these type of devices have primarily served as communications devices. Recently, however, consumers are increasingly relying upon these devices as an integral tool in the performance of a wide-range of personal and work-related tasks. In response, mobile phones and other wireless handheld devices have evolved into complex computing devices with equally complex computer hardware and software.
While many of these mobile devices continue to be used for various forms of communication (e.g., voice calls and text messaging) they also generally provide other various functionalities, including accessing and displaying websites, sending and receiving e-mails, taking and displaying photographs and videos, playing music and other forms of audio, etc. These, and numerous other functionalities, are generally performed by software applications either in the form of software components that are built-in to the device's mobile operating system or separate mobile applications (mobile apps) that run on top of the operating system. Recently, the development and use of mobile apps has become prolific and thousands of apps now exist across a wide array of mobile devices.
Numerous competing manufacturers, developers, and other service providers have entered the mobile device space in recent years, offering hardware, software in the form of mobile operating systems, or in some cases a combination of both hardware and software. This, in turn, has resulted in the development of a number of dissimilar and incompatible mobile device platforms and environments. Some of the differences among these devices include their hardware components, operating systems and input and output capabilities. In fact, many of the most widely used mobile devices, such as Blackberrys, iPhones and Android-based devices, use different operating systems (e.g., Symbian, iOS, Android and webOS), many of which have their own programming environments and software development tools.
Typically, developing mobile applications for these different operating systems and devices requires the use of varying design techniques and programming languages, as well as separate operating system or device specific software code and compilations. As a result, it is often challenging for developers to write software applications that are portable across multiple types of mobile devices. Instead, mobile app developers are frequently forced to rewrite all or at least substantial portions of the software in order to support different devices.
In order to encourage and facilitate the development of mobile apps for certain types of mobile operating systems and/or devices, the manufacturers and developers of these systems and devices frequently distribute software development kits (SDKs) that are associated with their devices and/or operating systems (or particular versions or releases thereof). Among other things, these SDKs allow application developers to write programs or applications for users of the supported mobile devices and/or mobile operating systems. While these SDKs assist with the development of mobile apps, in order to utilize these SDKs a significant degree of technical knowledge and expertise in software programming and mobile devices is typically required. In particular, use of these SDKs requires programmers to possess an understanding of and experience with both the programming language and the specific mobile operating system platform for which the application is being developed.
In addition to the challenges associated with building mobile apps, deploying these applications and distributing them to end users can often be a complex and involved process. In part, this is due to the fact that many of the mobile device and operating system manufacturers and developers require that all mobile apps to be used with their devices and operating systems must be distributed through their digital distribution platform (e.g., iOS's App Store, Android's Google Play, webOS's App Catalog). Typically, the apps must also be approved by the manufacturers or developers prior to being included in their distribution platforms. Obtaining such approvals for a mobile applications can be a time-consuming and complex process. As a result, an understanding of, and experience with, the requirements and restrictions imposed by manufacturers is often necessary in order to deploy and distribute applications to mobile device users successfully and efficiently.
Similarly, these manufacturers and developers often require that any additional data associated with the application, such as updates, plug-ins, extensions, and content, also be distributed through their digital distribution platforms. In some cases, certain types of updates are also subject to separate approval by the manufacturers. Thus, these restrictions can further complicate and slow-down the distribution and management of mobile applications.
Given the high level of skill and expertise needed to create, deploy and update mobile applications, many non-technical individuals, as well as individuals lacking experience in a particular programming language or mobile operating system or digital distribution platform, have are not able to develop and/or distribute mobile applications. Although there have been attempts to make mobile application development more accessible to a wider public through software systems that allow persons who do not have significant experience in programming or specific mobile operating system platforms to create mobile applications, these systems have exhibited a number of drawbacks and limitations which have resulted in their failure to be widely adopted by consumers.
For example, one drawback is that many of these software systems allow non-technical users to create applications for only one mobile operating system, such as, for example, iOS, Android, webOS, or Symbian, (or a restricted subset of the operating systems). In light of the number of different mobile operating systems, including a number of which are widely used, the ability to develop an application that can be easily ported across all mobile operating systems (or at least those with meaningful consumer bases) is a crucial in promoting efficient and simplified mobile application development.
Another drawback is that many of these software systems still require substantial technical knowledge and expertise and, therefore, these systems do not simplify the process to the degree necessary to make mobile app development accessible to non-technical users. Some of these systems are not intuitive to use, involve user training and/or require at least a base level of technical knowledge, such as exposure to application programming and design.
A further drawback is that many of these software systems do not allow the user to develop applications using voice or gesture commands and interactions, and therefore, these systems do not incorporate features that can simplify the user's application development experience. Furthermore, many of these systems do not facilitate application development for users who are visually impaired or have limited hand mobility.
Yet another drawback is that many of these software systems place significant limitations on the types of applications that can be built using the system. For example many of these systems only provide users with the ability to create simple, non-flexible applications that prohibit the utilization of the wide-range of features and specific functionalities included within many mobile devices and their respective mobile operating systems, such as a compass, GPS, gyroscope, touch screen, camera, speaker, microphone, Bluetooth, Wi-Fi, USB connectivity, and proximity sensor. As a result, with these types of systems, special programming skills and expertise is needed to use/install additional components, plug-ins, modules, or emulators, in order to create more sophisticated mobile apps that utilize these features and functionalities. Also, some of the resulting applications built using existing systems or development tools are only usable while the user's device is “online.” In addition, some of these systems require the user to download updates for the application from a third party, such as the mobile operating system's digital distribution platform, rather that from the application developer directly.
There is, therefore, a need for a system that simplifies and streamlines the development, deployment and update of mobile software applications, thereby making the process accessible to non-technical users through an enhanced, user-friendly experience. There is further a need for a system that allows users to develop applications using voice or gesture interactions. There is also an need for a system that allows users to develop an application that can run on any mobile device operating system. There is further a need for a system that allows users to create sophisticated applications that utilize a customized combination of mobile device and mobile operating system features and functionality. There is still further a need for a system that is web based while also enabling users to access applications developed through the platform off-line. There is still further a need for a system that provides users with updates associated with applications directly without the need to access the mobile operating system's digital distribution platform.